//动态过滤路由工具类


/** 根据权限过滤路由信息
 * @param {Object} oldRouter   [] 路由信息
 * @param {Object} permission  权限字符
 */
export function filterAsyncRoutes(oldRouter,permission){
  const finallyRoutes=[];
  oldRouter.forEach((route) => {
    //item转换一个新的对象 JSON.parse(JSON.stringify(item))
    const   item={ ...route}
    //判断item里面的meta对象里是否有permissions的属性
    if(hasPermission(permission,item)){
      //判断是否有二级节点
      if(item.children){
        //使用递归操作
        item.children=filterAsyncRoutes(item.children, permission);
      }
      //添加到集合中
      finallyRoutes.push(item);
    }
  })
  return finallyRoutes;
}

/** 判断item里面的meta对象里是否有permissions的属性
 * @param {Object} permission 权限值
 * @param {Object} item  对象
 */
function hasPermission(permission, item){
  //要验证权限
  if(item.meta && item.meta.permissions && item.meta.permissions instanceof Array){
    return item.meta.permissions.includes(permission) ;
  }else{
    return true
  }
}
